﻿// ***********************************************************************
// Assembly         : Delta_entidad
// Author           : Juan Alberto Cerino Gomez
// Created          : 05-01-2013
//
// Last Modified By : Juan Alberto Cerino Gomez
// Last Modified On : 05-01-2013
// ***********************************************************************
// <copyright file="AttEditorFiltro.cs" company="Delta Bussines">
//     Copyright (c) 2013  Delta Bussines. All rights reserved.
// </copyright>
// <summary></summary>
// ***********************************************************************
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Delta_entidad.Atributos
{
    /// <summary>
    /// Este atributo se coloca en las propiedades de la clase,indica la configuración del control que se va a mostrar en el panel de filtro de datos del Delta Grid.
    /// 
    /// Este atributo es OPCIONAL, use solo cuando deseé configurar un nuevo editor para el filtro.
    /// </summary>
    [Serializable()]
    [AttributeUsage(AttributeTargets.Property, Inherited = false, AllowMultiple = false)]
    public class AttEditorFiltro : System.Attribute
    {
        #region Declaraciones
        /// <summary>
        /// Variable que contiene los datos del editor del filtro.
        /// </summary>
        protected internal EntidadesControl.Cat_editor _editor = null;
        #endregion

        /// <summary>
        /// Obtiene los datos del editor del filtro del campo.
        /// </summary>
        /// <value>Devuelve una entidad vacia si no se ha configurado el tipo de filtro.</value>
        public EntidadesControl.Cat_editor editor
        {
            get
            {
                if (_editor == null)
                    _editor = new EntidadesControl.Cat_editor();
                return _editor;

            }
        }

        /// <summary>
        /// Constructor de la clase.
        /// </summary>
        /// <param name="DllEditor">Indica el nombre completo de la DLL que contiene el control a usar como editor del campo.</param>
        /// <param name="TipoEditor">Indica el nombre completo del tipo  del control que se va a usar como editor del campo.</param>
        /// <param name="PropiedadValor">Indica la propiedad que se va a leer y escribir del control, si se desea usar una propiedad para 
        /// leer y otra para escribir, se puede indicar de la siguiente forma: propLectura|PropEscritura.</param>
        /// <param name="DLLColumnaGrid">Indica el nombre completo de la DLL que contiene el tipo de columna a usar en el Grid para el campo.</param>
        /// <param name="TipoColumnaGrid">Indica el nombre completo del tipo de columna que se va a usar en el Grid para el campo.</param>
        /// <param name="FormatoGrid">Indica el formato que se aplica a la columna del campo.</param>
        /// <param name="ValoresControl">Indica los valores por default del control que se va a usar como editor del campo, por ejemplo si es un campo de texto y quiere que cada 
        /// vez que cargue el editor, se muestre el texto "Escriba aqui", se configura de la siguiente forma: "Text|Escriba aqui", se pueden configurar mas de una propiedad 
        /// separando por coma la configuracion: "Text|Escriba aqui,Width:10px".</param>
        public AttEditorFiltro(string DllEditor, string TipoEditor, string PropiedadValor, string DLLColumnaGrid, string TipoColumnaGrid, string FormatoGrid = null, string ValoresControl = null)
        {
            editor.ensamblado = DllEditor;
            editor.editor = TipoEditor;
            editor.grid_ensamblado = DLLColumnaGrid;
            editor.grid_editor = TipoColumnaGrid;
            editor.propiedad_valor = PropiedadValor;
            editor.grid_formato = FormatoGrid;
            editor.valores_propiedades = ValoresControl;
        }
    }
}
